package menu;

import classe.Administrador;
import classe.Aluno;
import classe.Atividade;
import classe.Disciplina;
import classe.Nota;
import classe.Professor;
import classe.Turma;
import java.io.BufferedReader;
import java.io.Console;
import java.io.IOException;
import java.io.InputStreamReader;
import persistencia.PersistenciaAdministrador;
import persistencia.PersistenciaAluno;
import persistencia.PersistenciaAtividade;
import persistencia.PersistenciaDisciplina;
import persistencia.PersistenciaNota;
import persistencia.PersistenciaProfessor;
import persistencia.PersistenciaTurma;

/**
 *
 * @author Amanda
 */
public class Menu {

    public void menuPrincipal() throws IOException {
        int resposta;
        String temporaria;
        System.out.println("Bem vindo ao sistema de controle academico da UFLN");
        System.out.println("Selecione seu tipo de usuario");
        System.out.println("1- Administrador");
        System.out.println("2- Professor ");
        System.out.println("3- Aluno");
        System.out.println("4- Sair");
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        temporaria = buf.readLine();
        resposta = Integer.parseInt(temporaria);
        switch (resposta) {
            case 1:
                menuUsuarioSenhaAdministrador();
                break;

               case 2:
             menuProfessor();
             break;

         //    case 3:
          //   menuAluno();
          //   break;
            case 4:
                break;
        }
    }

    public void menuUsuarioSenhaAdministrador() throws IOException {
        String cpf, senha;
        int flag = 1;

        while (flag == 1) {
            limpaTela();
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Bem vindo ADMINISTRADOR");
            System.out.println("Digite seu CPF");
            cpf = buf.readLine();
            System.out.println("Digite sua senha");
            senha = buf.readLine();

            if (PersistenciaAdministrador.verificaSenhaAdministrador(cpf, senha)) {
                menuAdministrador();
                flag = 0;
            } else {
                System.out.println("Senha incorreta");
                System.out.println("Digite 1 para tentar novamente");
                System.out.println("Digite qualquer numero diferente de 1 para voltar ao menu principal");
                String resposta = buf.readLine();
                flag = Integer.parseInt(resposta);
            }
        }
    }

    public void menuAdministrador() throws IOException {

        int cadastraMaisUm = 0;
        while (cadastraMaisUm == 0) {
            limpaTela();
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Bem vindo");
            System.out.println("Selecione a opcao desejada:");
            System.out.println("1- Cadastrar Aluno");
            System.out.println("2- Cadastrar Professor");
            System.out.println("3- Cadastrar Administrador");
            System.out.println("4- Cadastrar Turma");
            System.out.println("5- Cadastrar Disciplina");
            System.out.println("6- Editar Senha");
            System.out.println("7- Sair");
            String resposta = buf.readLine();
            Integer opcao = Integer.parseInt(resposta);
            switch (opcao) {
                case 1:
                    menuCadastroAluno();
                    break;
                case 2:
                    menuCadastroProfessor();
                    break;
                case 3:
                    menuCadastroAdministrador();
                    break;
                case 4:
                    menuCadastroTurma();
                    break;

                case 5:
                    menuCadastraDisciplina();
                    break;

                case 6:
                    menuEditarSenha();
                    break;

                case 7:
                    cadastraMaisUm = 1;
                    break;

            }
        }
    }

    public void menuCadastroAluno() throws IOException {
        int cadastrarMaisUm = 1;
        while (cadastrarMaisUm == 1) {
            limpaTela();

            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

            System.out.println("Entre com o nome do aluno a ser cadastrado.");
            String nomeAluno = buf.readLine();


            System.out.println("Digite o cpf do aluno a ser cadastrado");
            String cpfAluno = buf.readLine();
            Aluno al = new Aluno(nomeAluno, cpfAluno);
            PersistenciaAluno.alunoList.add(al);
            System.out.println("Aluno cadastrado com sucesso!");

            System.out.println("Voce deseja cadastrar mais um aluno? Digite 1 para Sim e 0 para nao");
            cadastrarMaisUm = Integer.parseInt(buf.readLine());


        }


    }

    public void menuCadastroProfessor() throws IOException {
        int cadastrarMaisUm = 1;
        while (cadastrarMaisUm == 1) {
            limpaTela();
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

            System.out.println(
                    "Entre com o nome do professor a ser cadastrado.");
            String nome = buf.readLine();

            System.out.println(
                    "Digite o cpf do professor a ser cadastrado");
            String cpf = buf.readLine();

            System.out.println(
                    "Digite o nome do departamento a qual pertence.");
            String respostaDepartamento = buf.readLine();

            Professor p = new Professor(nome, cpf);
            p.setDepartamento(respostaDepartamento);
            PersistenciaProfessor.professorList.add(p);
            System.out.println("Professor cadastrado com sucesso!");

            System.out.println("Voce deseja cadastrar mais um professor? Digite 1 para Sim e 0 para nao");
            cadastrarMaisUm = Integer.parseInt(buf.readLine());
        }
    }

    public void menuCadastroAdministrador() throws IOException {
        int cadastrarMaisUm = 1;
        while (cadastrarMaisUm == 1) {
            limpaTela();
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

            System.out.println("Entre com o nome do administrador a ser cadastrado.");
            String nomeAdministrador = buf.readLine();

            System.out.println("Digite o cpf do administrador a ser cadastrado");
            String cpfAdministrador = buf.readLine();

            Administrador admin = new Administrador(nomeAdministrador, cpfAdministrador);
            PersistenciaAdministrador.administradorList.add(admin);

            System.out.println("Administrador cadastrado com sucesso!");

            System.out.println("Voce deseja cadastrar mais um administrador? Digite 1 para Sim e 0 para nao");
            cadastrarMaisUm = Integer.parseInt(buf.readLine());


        }
    }

    public void menuCadastroTurma() throws IOException {
        int cadastrarMaisUm = 1;
        while (cadastrarMaisUm == 1) {

            limpaTela();
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

            System.out.println("Digite o ano da turma ser cadastrada.");
            String anoTurma = buf.readLine();

            System.out.println("Digite o periodo da turma a ser cadastrado.");
            String periodoTurma = buf.readLine();

            System.out.println("Digite o local em que a turma sera fornecida.");
            String localTurma = buf.readLine();

            System.out.println("Digite o horario que a turma sera oferecida.");
            String horarioTurma = buf.readLine();

            System.out.println("Digite o numero de vagas disponiveis para a turma.");
            String periodo = buf.readLine();
            Integer periodoTurmas = Integer.parseInt(periodo);
            Turma turma = new Turma();
            PersistenciaTurma.TurmaList.add(turma);

            System.out.println("Turma cadastrada com sucesso!");

            System.out.println("Voce deseja cadastrar mais uma turma? Digite 1 para Sim e 0 para nao");
            cadastrarMaisUm = Integer.parseInt(buf.readLine());

        }
    }

    public void menuCadastraDisciplina() throws IOException {
        int cadastrarMaisUm = 1;
        while (cadastrarMaisUm == 1) {
            limpaTela();
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));


            System.out.println("Digite nome da disciplina a ser cadastrada.");
            String nomeDisciplina = buf.readLine();

            System.out.println("Digite a ementa da disciplina.");
            String ementaDisciplina = buf.readLine();

            System.out.println("Digite a carga horaria da disciplina.");
            String cargaHorariaDisciplina = buf.readLine();

            Disciplina disciplina = new Disciplina();
            PersistenciaDisciplina.disciplinaList.add(disciplina);

            System.out.println("Disciplina cadastrada com sucesso!");

            System.out.println("Voce deseja cadastrar mais uma disciplina? Digite 1 para Sim e 0 para nao");
            cadastrarMaisUm = Integer.parseInt(buf.readLine());

        }
    }

    public void menuEditarSenha() throws IOException {
        limpaTela();
        String cpf, senha;
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Bem vindo ADMINISTRADOR");
        System.out.println("Digite seu CPF");
        cpf = buf.readLine();
        System.out.println("Digite sua nova senha");
        senha = buf.readLine();
        PersistenciaAdministrador.mudaSenha(cpf, senha);
        System.out.println("Senha modificada com sucesso!");

    }
    
    public void menuProfessor() throws IOException{
          int cadastraMaisUm = 0;
        while (cadastraMaisUm == 0) {
            limpaTela();
            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Bem vindo");
            System.out.println("Selecione a opcao desejada:");
            System.out.println("1- Cadastrar Atividade");
            System.out.println("2- Cadastrar Nota");
            System.out.println("3- Cadastrar Falta");
            System.out.println("4- Editar Senha");
            System.out.println("5- Sair");
            String resposta = buf.readLine();
            Integer opcao = Integer.parseInt(resposta);
            switch (opcao) {
                case 1:
                    menuCadastroAtividade();
                    break;
                case 2:
                    menuCadastroNota();
                    break;
             //   case 3:
              //      menuCadastroFalta();
              //      break;
                case 4:
                    menuEditarSenha();
                    break;

                case 5:
                    cadastraMaisUm = 1;
                    break;

            }
        }
    }

    public void menuCadastroAtividade() throws IOException {
        int cadastrarMaisUm = 1;
        while (cadastrarMaisUm == 1) {
            limpaTela();

            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

            System.out.println("Entre com o nome da atividade a ser cadastrada.");
            String nomeAtividade = buf.readLine();


            System.out.println("Digite o tipo da atividade a ser cadastrada.");
            String tipoAtividade = buf.readLine();
            Atividade ativ = new Atividade();
            PersistenciaAtividade.atividadeList.add(ativ);
            System.out.println("Atividade cadastradoa com sucesso!");

            System.out.println("Voce deseja cadastrar mais um aluno? Digite 1 para Sim e 0 para nao");
            cadastrarMaisUm = Integer.parseInt(buf.readLine());


        }
    }
    
     public void menuCadastroNota() throws IOException {
        int cadastrarMaisUm = 1;
        while (cadastrarMaisUm == 1) {
            limpaTela();

            BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

            System.out.println("Entre com o cpf do aluno.");
            String cpfAluno = buf.readLine();


            System.out.println("Digite o nome da atividade a ser cadastrada.");
            String nomeNota = buf.readLine();
            
            System.out.println("Digite o tipo da atividade a ser cadastrada.");
            String tipoAtividade = buf.readLine();
            
            System.out.println("Digite a data da atividade a ser cadastrada.");
            String dataAtividade = buf.readLine();
            
             System.out.println("Digite a nota obtida pelo aluno na atividade a ser cadastrada.");
            String notaAtividade = buf.readLine();
            
            Nota nota = new Nota();
            PersistenciaNota.NotaList.add(nota);
            System.out.println("Atividade cadastrada com sucesso!");

            System.out.println("Voce deseja cadastrar mais uma atividade? Digite 1 para Sim e 0 para nao");
            cadastrarMaisUm = Integer.parseInt(buf.readLine());


        }
    }
    

    public void limpaTela() {
        for (int i = 0; i < 50; i++) {
            System.out.println("");
        }

    }
}